package com.cc.struts.forms;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.StringTokenizer;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.upload.FormFile;

import com.cc.bean.EnviarCorreoVO;
import com.cc.bean.MunicipioVO;
import com.cc.bean.OtVO;
import com.cc.bean.UsuarioVO;
import com.cc.dao.UsuarioDAO;

/**
 * Formulario del flujo de registro de OTs
 * @author jcorrea
 *
 */
public class RegistrarOTForm extends ActionForm{

	private static final long serialVersionUID = 9186678541908485473L;
	private String busquedaMunicipios;
	private String nombre;
	private String estados;
	private String nomEstado;
	private String municipios;
	private String nomMunicipio;
	private String puesto;
	private String telefono1;
	private String telefono2;
	private String extension1;
	private String extension2;
	private String calleNumero;
	private String codigoPostal;
	private String observaciones;
	private String nomCliente;
	private String nomAnalista;
	private String fechaCita;
	private Date fechaCitaDate;
	private String fechaAlta;
	private String nomCapturista;
	private String estatus;
	private String comentarios;
	private String boton;
	private String titulo;
	private String folio;
	private Integer idOT;
	private Integer idUsuario;
	private String confirmarCorreo;
	private String colonia;
	private String botonExterno;
	//private boolean enviarCorreo;
	private boolean avisoAnalista;
	private String numero;
	private String fechaTerminacion;
	private FormFile archivo;
	private Integer idAnalista;
	private Integer idCapturista;
	private Date fechaInvest;
	private Date fechaCaptura;
	private String tipoAnalisis;
	private boolean fileCliente;
	private List<EnviarCorreoVO> listaCorreos;
	private String correoExtra;
	private ArrayList<Integer> trueCorreos;
	private boolean mismoCliente;
//	public List<File> archivosFormulario;

	public EnviarCorreoVO getCorreo(int index){
		if(trueCorreos == null){
			trueCorreos = new ArrayList<Integer>();
		}
		trueCorreos.add(index);
		return (EnviarCorreoVO) this.listaCorreos.get(index);
	}
	
	/**
	 * @return Obtener trueCorreos
	 */
	public ArrayList<Integer> getTrueCorreos() {
		return trueCorreos;
	}

	/**
	 * @param Almacenar trueCorreos
	 */
	public void setTrueCorreos(ArrayList<Integer> trueCorreos) {
		this.trueCorreos = trueCorreos;
	}

	public void setCorreo(int index, EnviarCorreoVO valor){
		this.listaCorreos.add(index, valor);
	}
	
	public String getColonia() {
		return colonia;
	}
	public String getExtension1() {
		return extension1;
	}
	public void setExtension1(String extension1) {
		this.extension1 = extension1;
	}
	public String getExtension2() {
		return extension2;
	}
	public void setExtension2(String extension2) {
		this.extension2 = extension2;
	}
	public void setColonia(String colonia) {
		this.colonia = colonia;
	}
	public String getBusquedaMunicipios() {
		return busquedaMunicipios;
	}
	public void setBusquedaMunicipios(String busquedaMunicipios) {
		this.busquedaMunicipios = busquedaMunicipios;
	}
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getEstados() {
		return estados;
	}
	public void setEstados(String estados) {
		this.estados = estados;
	}
	public String getMunicipios() {
		return municipios;
	}
	public void setMunicipios(String municipios) {
		this.municipios = municipios;
	}
	public String getPuesto() {
		return puesto;
	}
	public void setPuesto(String puesto) {
		this.puesto = puesto;
	}
	public String getTelefono1() {
		return telefono1;
	}
	public void setTelefono1(String telefono1) {
		this.telefono1 = telefono1;
	}
	public String getTelefono2() {
		return telefono2;
	}
	public void setTelefono2(String telefono2) {
		this.telefono2 = telefono2;
	}
	public String getCalleNumero() {
		return calleNumero;
	}
	public void setCalleNumero(String calleNumero) {
		this.calleNumero = calleNumero;
	}
	public String getCodigoPostal() {
		return codigoPostal;
	}
	public void setCodigoPostal(String codigoPostal) {
		this.codigoPostal = codigoPostal;
	}
	public String getObservaciones() {
		return observaciones;
	}
	public void setObservaciones(String observaciones) {
		this.observaciones = observaciones;
	}
	public String getBoton() {
		return boton;
	}
	public void setBoton(String boton) {
		this.boton = boton;
	}
	public String getTitulo() {
		return titulo;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}
	public Integer getIdOT() {
		return idOT;
	}
	public void setIdOT(Integer idOT) {
		this.idOT = idOT;
	}
	public void setFolio(String folio) {
		this.folio = folio;
	}
	public String getFolio() {
		return folio;
	}
	public String getNomCliente() {
		return nomCliente;
	}
	public void setNomCliente(String nomCliente) {
		this.nomCliente = nomCliente;
	}
	public String getNomAnalista() {
		return nomAnalista;
	}
	public void setNomAnalista(String nomAnalista) {
		this.nomAnalista = nomAnalista;
	}
	public String getNomCapturista() {
		return nomCapturista;
	}
	public void setNomCapturista(String nomCapturista) {
		this.nomCapturista = nomCapturista;
	}
	public String getEstatus() {
		return estatus;
	}
	public void setEstatus(String estatus) {
		this.estatus = estatus;
	}
	
	public String getFechaCita() {
		return fechaCita;
	}
	public void setFechaCita(String fechaCita) {
		this.fechaCita = fechaCita;
	}
	public String getFechaAlta() {
		return fechaAlta;
	}
	public void setFechaAlta(String fechaAlta) {
		this.fechaAlta = fechaAlta;
	}
	/* (non-Javadoc)
	 * @see org.apache.struts.action.ActionForm#reset(org.apache.struts.action.ActionMapping, javax.servlet.http.HttpServletRequest)
	 */
	public void reset(ActionMapping mapping, HttpServletRequest request, OtVO ot) {
		
		HttpSession session = request.getSession();
		this.idOT = ot.getId();
		this.nombre = ot.getNombre();
		this.estados = null;
		if(ot.getIdEstado() != 0){
			this.estados = "" + ot.getIdEstado();
			ArrayList<MunicipioVO> municipios = UsuarioDAO.catalogoMunicipiosVO(this.estados);
			session.setAttribute("municipios", municipios);
		}else{
			session.setAttribute("municipios", new ArrayList<MunicipioVO>());
		}
		this.municipios = null;
		if(ot.getIdMunicipio() != 0){
			this.municipios = "" + ot.getIdMunicipio();
		}
		this.puesto = ot.getPuesto();
		if(ot.getTelefono1()!=null && !"".equals(ot.getTelefono1().trim())){
			String[] str = ot.getTelefono1().split(" EXT:");
			this.telefono1 = str[0];
			this.extension1 = null;
			if(str.length > 1){
				this.extension1 = str[1];
			}
		}else{
			this.telefono1 = null;
			this.extension1 = null;
		}
		if(ot.getTelefono2()!=null && !ot.getTelefono2().trim().equals("")){
			String[] str = ot.getTelefono2().split(" EXT:");
			this.telefono2 = str[0];
			this.extension2 = null;
			if(str.length > 1){
				this.extension2 = str[1];
			}
		}else{
			this.telefono2 = null;
			this.extension2 = null;
			
		}
		this.calleNumero = ot.getNumeroDireccion();
		this.codigoPostal = ot.getCodigoPostal();
		this.observaciones = ot.getObservaciones();
		this.estatus = ot.getEstatus();
		this.folio = ot.getNumero();
		this.fechaCitaDate = ot.getFechaCita();
		if(ot.getFechaCita() != null){
			SimpleDateFormat formato = new SimpleDateFormat("yyyy-MM-dd HH:mm");
			this.fechaCita = formato.format(ot.getFechaCita());
		}else{
			this.fechaCita = "";
		}
		if(ot.getFechaSolicitud() != null){
			this.fechaAlta = ot.getFechaSolicitud().toString();
		}else{
			this.fechaAlta = null;
		}
		this.fechaTerminacion = ot.getFechaTerminacionStr();
//		this.archivo = null;
		if(ot.getId() != null && ot.getId() != 0){
			this.boton = "MODIFICAR";
			this.titulo = "Modificar Orden de Trabajo";
		}else{
			this.boton = "REGISTRAR";
			this.titulo = "Registrar Orden de Trabajo";
		}
		this.comentarios = ot.getComentarios();
		this.nomCliente = ot.getCliente().getNomApellido();
		this.nomAnalista = ot.getAnalista().getNomApellido();
		this.nomCapturista = ot.getCapturista().getNomApellido();
		//this.enviarCorreo = false;
		this.avisoAnalista = false;
		this.setNumero(ot.getNumero());
		this.colonia = ot.getColonia();
		this.idAnalista = ot.getIdAnalista();
		this.idCapturista = ot.getIdCaptura();
		this.nomEstado = ot.getEstado();
		this.nomMunicipio = ot.getMunicipio();
		this.fechaCaptura = ot.getFechaCaptura();
		this.fechaInvest = ot.getFechaInvest();
		this.idUsuario = ot.getIdUsuario();
		this.fileCliente = false;
		this.listaCorreos = new ArrayList<EnviarCorreoVO>();
		this.correoExtra = null;
		this.trueCorreos = null;
		this.mismoCliente = false;
		super.reset(mapping, request);
	}
	public void setFechaCitaDate(Date fechaCitaDate) {
		this.fechaCitaDate = fechaCitaDate;
	}
	public Date getFechaCitaDate() {
		return fechaCitaDate;
	}
	public void setComentarios(String comentarios) {
		this.comentarios = comentarios;
	}
	public String getComentarios() {
		return comentarios;
	}
	/**
	 * @param Almacenar idUsuario
	 */
	public void setIdUsuario(Integer idUsuario) {
		this.idUsuario = idUsuario;
	}
	/**
	 * @return Obtener idUsuario
	 */
	public Integer getIdUsuario() {
		return idUsuario;
	}
	/**
	 * @param Almacenar confirmarCorreo
	 */
	public void setConfirmarCorreo(String confirmarCorreo) {
		this.confirmarCorreo = confirmarCorreo;
	}
	/**
	 * @return Obtener confirmarCorreo
	 */
	public String getConfirmarCorreo() {
		return confirmarCorreo;
	}
	/**
	 * @param Almacenar botonExterno
	 */
	public void setBotonExterno(String botonExterno) {
		this.botonExterno = botonExterno;
	}
	/**
	 * @return Obtener botonExterno
	 */
	public String getBotonExterno() {
		return botonExterno;
	}
	/**
	 * @param enviarCorreo the enviarCorreo to set
	 */
	/*public void setEnviarCorreo(boolean enviarCorreo) {
		this.enviarCorreo = enviarCorreo;
	}*/
	/**
	 * @return the enviarCorreo
	 */
	/*public boolean isEnviarCorreo() {
		return enviarCorreo;
	}*/
	/**
	 * @param Almacenar numero
	 */
	public void setNumero(String numero) {
		this.numero = numero;
	}
	/**
	 * @return Obtener numero
	 */
	public String getNumero() {
		return numero;
	}
	/**
	 * @param fechaTerminacion the fechaTerminacion to set
	 */
	public void setFechaTerminacion(String fechaTerminacion) {
		this.fechaTerminacion = fechaTerminacion;
	}
	/**
	 * @return the fechaTerminacion
	 */
	public String getFechaTerminacion() {
		return fechaTerminacion;
	}
	/**
	 * @param Almacenar archivo
	 */
	public void setArchivo(FormFile archivo) {
		this.archivo = archivo;
	}
	/**
	 * @return Obtener archivo
	 */
	public FormFile getArchivo() {
		return archivo;
	}
	/**
	 * @return Obtener idAnalista
	 */
	public Integer getIdAnalista() {
		return idAnalista;
	}
	/**
	 * @param Almacenar idAnalista
	 */
	public void setIdAnalista(Integer idAnalista) {
		this.idAnalista = idAnalista;
	}
	/**
	 * @return Obtener idCapturista
	 */
	public Integer getIdCapturista() {
		return idCapturista;
	}
	/**
	 * @param Almacenar idCapturista
	 */
	public void setIdCapturista(Integer idCapturista) {
		this.idCapturista = idCapturista;
	}
	/**
	 * @return Obtener nomEstado
	 */
	public String getNomEstado() {
		return nomEstado;
	}
	/**
	 * @param Almacenar nomEstado
	 */
	public void setNomEstado(String nomEstado) {
		this.nomEstado = nomEstado;
	}
	/**
	 * @return Obtener nomMunicipio
	 */
	public String getNomMunicipio() {
		return nomMunicipio;
	}
	/**
	 * @param Almacenar nomMunicipio
	 */
	public void setNomMunicipio(String nomMunicipio) {
		this.nomMunicipio = nomMunicipio;
	}
	/**
	 * @return Obtener fechaInvest
	 */
	public Date getFechaInvest() {
		return fechaInvest;
	}
	/**
	 * @param Almacenar fechaInvest
	 */
	public void setFechaInvest(Date fechaInvest) {
		this.fechaInvest = fechaInvest;
	}
	/**
	 * @return Obtener fechaCaptura
	 */
	public Date getFechaCaptura() {
		return fechaCaptura;
	}
	/**
	 * @param Almacenar fechaCaptura
	 */
	public void setFechaCaptura(Date fechaCaptura) {
		this.fechaCaptura = fechaCaptura;
	}
	/**
	 * @param Almacenar tipoAnalisis
	 */
	public void setTipoAnalisis(String tipoAnalisis) {
		this.tipoAnalisis = tipoAnalisis;
	}
	/**
	 * @return Obtener tipoAnalisis
	 */
	public String getTipoAnalisis() {
		return tipoAnalisis;
	}
	/**
	 * @param Almacenar fileCliente
	 */
	public void setFileCliente(boolean fileCliente) {
		this.fileCliente = fileCliente;
	}
	/**
	 * @return Obtener fileCliente
	 */
	public boolean isFileCliente() {
		return fileCliente;
	}
	/**
	 * @param Almacenar avisoAnalista
	 */
	public void setAvisoAnalista(boolean avisoAnalista) {
		this.avisoAnalista = avisoAnalista;
	}
	/**
	 * @return Obtener avisoAnalista
	 */
	public boolean isAvisoAnalista() {
		return avisoAnalista;
	}
	/**
	 * @return Obtener lstCorreos
	 */
	public List<EnviarCorreoVO> getListaCorreos() {
		return listaCorreos;
	}
	/**
	 * @param Almacenar lstCorreos
	 */
	public void setListaCorreos(List<EnviarCorreoVO> listaCorreos) {
		this.listaCorreos = listaCorreos;
	}

	/**
	 * @param Almacenar correoExtra
	 */
	public void setCorreoExtra(String correoExtra) {
		this.correoExtra = correoExtra;
	}

	/**
	 * @return Obtener correoExtra
	 */
	public String getCorreoExtra() {
		return correoExtra;
	}

	/**
	 * @param Almacenar mismoCliente
	 */
	public void setMismoCliente(boolean mismoCliente) {
		this.mismoCliente = mismoCliente;
	}

	/**
	 * @return Obtener mismoCliente
	 */
	public boolean isMismoCliente() {
		return mismoCliente;
	}
	
}
